package com.ruoyi.dynamic.mapper;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.dynamic.domain.UserDynamic;
import com.ruoyi.dynamic.pojo.AppDynamic;
import com.ruoyi.dynamic.pojo.AppUserDynamicVO;
import com.ruoyi.home.pojo.AppMyServiceDTO;

/**
 * 用户发布动态Mapper接口
 * 
 * @author DEREK
 * @date 2023-05-12
 */
public interface UserDynamicMapper extends BaseMapper<UserDynamic>
{
    /**
     * 查询用户发布动态
     * 
     * @param id 用户发布动态主键
     * @return 用户发布动态
     */
    public UserDynamic selectUserDynamicById(Long id);

    /**
     * 查询用户发布动态列表
     * 
     * @param userDynamic 用户发布动态
     * @return 用户发布动态集合
     */
    public List<UserDynamic> selectUserDynamicList(UserDynamic userDynamic);

    /**
     * 新增用户发布动态
     * 
     * @param userDynamic 用户发布动态
     * @return 结果
     */
    public int insertUserDynamic(UserDynamic userDynamic);

    /**
     * 修改用户发布动态
     * 
     * @param userDynamic 用户发布动态
     * @return 结果
     */
    public int updateUserDynamic(UserDynamic userDynamic);

    /**
     * 删除用户发布动态
     * 
     * @param id 用户发布动态主键
     * @return 结果
     */
    public int deleteUserDynamicById(Long id);

    /**
     * 批量删除用户发布动态
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteUserDynamicByIds(Long[] ids);
    
    /**
     * 	用户动态
     * @param loginUserId
     * @param userId
     * @param dynamicType
     * @param type
     * @param city
     * @param pageNo
     * @return
     */
    IPage<AppDynamic> userDynamic(Page<AppDynamic> page,@Param("param")AppUserDynamicVO param);
    
    /**
     * 	获取官方发布的动态 取出最新的一条
     * @param userId
     * @return
     */
    AppDynamic officialUserDynamic(@Param("userId")Long userId);
    
    /**
     * 	获取官方发布的活动 取最新的3条
     * @return
     */
    List<AppDynamic> officialUserActivity();
    
    List<AppMyServiceDTO> myActivity(@Param("userId")Long userId,@Param("type")Integer type);
    
    Long automaticDynamic(@Param("dynamicId")String dynamicId);
    Long automaticParty(@Param("partyId")String partyId);
}
